package vue.FenetrePartie;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;

import controleur.Control;


public class InformationPartie extends JPanel implements ActionListener {
	
	private static final long serialVersionUID = 1L;
	Panneau p;
	Control controleur;
	JLabel quantiteOr;
	JLabel quantiteElixir;
	JLabel maxQuantiteElixir;
	JLabel maxQuantiteOr;
	
	JLabel production;
	JLabel productionOr;
	JLabel productionElixir;
	
	JLabel quantiteUnite;
	JLabel quantiteSoldat;
	JLabel quantiteArcher;
	JLabel quantiteGobelin;
	JLabel quantiteGeant;
	
	JButton boutonQuete;
	JButton boutonSauvegarde;
	
	Image jaugeElixir;
	Image jaugeOr;
	
	Quete fenetreQuete;

	
	/**
	 * 
	 * @param p, c'est le panneau principal qui contient les 4 panneaux de la partie.
	 * 
	 * Ce panneau est celui en haut à droite, il contient l'ensemble des informations de la partie.
	 */
	public InformationPartie(Panneau p)
	{
		this.p = p;
		this.controleur = this.p.getControleur();
		this.setLayout (null);
		this.setBackground(Color.GRAY);
		this.setBorder(BorderFactory.createLineBorder(Color.BLACK));
		
		this.jaugeElixir = new ImageIcon("images/finies/jaugeElixir.png").getImage(); 
		this.jaugeOr = new ImageIcon("images/finies/jaugeOr.png").getImage(); 
		
		this.quantiteOr = new JLabel();
		this.quantiteElixir = new JLabel();
		this.maxQuantiteElixir = new JLabel();
		this.maxQuantiteOr = new JLabel();

		this.production = new JLabel();
		this.productionOr = new JLabel();
		this.productionElixir = new JLabel();
		
		
		this.quantiteUnite = new JLabel();
		this.quantiteSoldat = new JLabel();
		this.quantiteArcher = new JLabel();
		this.quantiteGobelin = new JLabel();
		this.quantiteGeant = new JLabel();
		
		this.boutonQuete = new JButton("Faire Quete");
		this.boutonQuete.addActionListener(this);
		
		
		this.boutonSauvegarde = new JButton("Sauvegarder");
		this.boutonSauvegarde.addActionListener(this);

		
		this.maxQuantiteOr.setBounds(20, 15, 150,10);
		this.quantiteOr.setBounds(20, 20, 150,50);
		
		this.maxQuantiteElixir.setBounds(20, 55, 150,50);
		this.quantiteElixir.setBounds(20, 80, 150,50);
		
		this.production.setBounds(10, 130, 180,50);
		this.productionOr.setBounds(10, 150, 180,50);
		this.productionElixir.setBounds(10, 170, 180,50);		
		
		this.quantiteUnite.setBounds(10, 220, 180,50);
		this.quantiteSoldat.setBounds(10, 240, 180,50);
		this.quantiteArcher.setBounds(10, 260, 180,50);
		this.quantiteGobelin.setBounds(10, 280, 180,50);
		this.quantiteGeant.setBounds(10, 300, 180,50);
		
		
		this.boutonQuete.setBounds(10, 350, 180,50);
		this.boutonSauvegarde.setBounds(10, 425, 180,50);
		

		
		
		this.add(this.maxQuantiteElixir);
		this.add(this.maxQuantiteOr);
		this.add(this.quantiteOr);
		this.add(this.quantiteElixir);
		this.add(this.production);
		this.add(this.productionOr);
		this.add(this.productionElixir);
		this.add(this.quantiteUnite);
		this.add(this.quantiteSoldat);
		this.add(this.quantiteArcher);
		this.add(this.quantiteGobelin);
		this.add(this.quantiteGeant);
		this.add(this.boutonQuete);
		this.add(this.boutonSauvegarde);
		
		this.fenetreQuete = new Quete(this.p);

		
		this.rafraichir();
	}
	
	public void paintComponent(Graphics g) 
	{
		super.paintComponent(g);	
		g.drawImage(this.jaugeElixir, 10, 80, null);	
		g.drawImage(this.jaugeOr, 10, 20, null);	
	}
	
	public void rafraichir()
	{
		
		this.maxQuantiteOr.setText("Maximum : "+this.controleur.getJoueur().getRessourceOrMax());
		this.quantiteOr.setText("Or :     "+this.controleur.getJoueur().getRessourceOr());


		this.maxQuantiteElixir.setText("Maximum : "+this.controleur.getJoueur().getRessourceElixirMax());
		this.quantiteElixir.setText("Elixir : "+this.controleur.getJoueur().getRessourceElixir());

		this.production.setText("Production par Seconde");
		this.productionOr.setText("Production Or : "+this.controleur.getJoueur().getProductionParSecondeOrTotal());
		this.productionElixir.setText("Production Elixir : "+this.controleur.getJoueur().getProductionParSecondeElixirTotal());

		
		this.quantiteUnite.setText("Unite : "+ this.controleur.getJoueur().getListeUniteAttaquante().size()+" / "+this.controleur.getJoueur().getNbUniteMax());
		this.quantiteSoldat.setText("nb Soldat : "+this.controleur.getJoueur().getNbUniteSoldat());
		this.quantiteArcher.setText("nb Archer : "+this.controleur.getJoueur().getNbUniteArcher());
		this.quantiteGobelin.setText("nb Gobelin : "+this.controleur.getJoueur().getNbUniteGobelin());
		this.quantiteGeant.setText("nb Geant : "+this.controleur.getJoueur().getNbUniteGeant());		
		
		this.fenetreQuete.rafraichir();

		this.repaint();
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		
		Object source = e.getSource();
		
		if(source == this.boutonQuete)	this.fenetreQuete.setVisible(true);
		else if(source == this.boutonSauvegarde) this.p.getControleur().sauvegarderPartie("lol");

	}

}
